/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mru;

/**
 *
 * @author EDGAR
 */
public class MRU {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        // Crear un gestor de memoria
        GestorMemoriaIntermedia gestorBuffer = new GestorMemoriaIntermedia(5);
        // Paginas del Disco
        System.out.println("Paginas del Disco: ");
        Pagina[] paginas = new Pagina[10];
        for (int i = 0; i < paginas.length; i++) {
            Pagina pagina = new Pagina(i, "p" + i);
            paginas[i] = pagina;
            System.out.println(pagina);
        }

        System.out.println("Contenido del Gestor: ");
        System.out.println(gestorBuffer);


        for (int i = 0; i < paginas.length; i++) {
            gestorBuffer.ponerPaginaEnBuffer(paginas[i]);
        }

//        System.out.println("Contenido del Gestor despues de poner bloques: ");
//        System.out.println(gestorBuffer);

//        System.out.println("Poner una página al Buffer: ");
//        Pagina paginaN = new Pagina(1,"p1");
//        Pagina paginaE = gestorBuffer.ponerPaginaEnBufferNuevo(paginaN);
//        System.out.println(paginaE);
//        System.out.println(gestorBuffer);
//        
//        System.out.println("Poner una página al Buffer: ");
//        Pagina paginaN1 = new Pagina(2,"p2");
//        Pagina paginaE1 = gestorBuffer.ponerPaginaEnBufferNuevo(paginaN1);
//        System.out.println(paginaE1);
//        System.out.println(gestorBuffer);
//        
//        System.out.println("Poner una página al Buffer: ");
//        Pagina paginaN2 = new Pagina(3,"p3");
//        Pagina paginaE2 = gestorBuffer.ponerPaginaEnBufferNuevo(paginaN2);
//        System.out.println(paginaE2);
//        System.out.println(gestorBuffer);
//        
//        System.out.println("Poner una página al Buffer: ");
//        Pagina paginaN3 = new Pagina(4,"p4");
//        Pagina paginaE3 = gestorBuffer.ponerPaginaEnBufferNuevo(paginaN3);
//        System.out.println(paginaE3);
//        System.out.println(gestorBuffer);
        
        
        //AL IGUAL QUE EL EJERCICIO DE LRU INICIAMOS EN 5.
        //PARA AHORRAR UN POCOC DE CODIGO EN ESTA PARTE REALIZAREMOS UN BUCLE DONDE SOLO NOS AGREGARA...
        //LAS PAGINAS  NO MOSTRADAS EN LA MEMORIA INTERMEDIA DEL DISCO
        // ENTONCES ADEMAS DE ESTO SE HA REALIZADO CAMBIOS COMO POR EJEMPLO CREARNOS UN MODULO "ponerPaginaEnBufferNuevo"..
        //DONDE SE HA INMOBILIZADO EL ULTIMO VALOR ADIFERENCIA DEL LRU DONDE EL CONTADOR AUMENTA...
        //EN ESTE CASO SOLAMENTE SE VA  A QUEDAR ESTATICO EL ULTIMO MAS RECIENTEMENTE UTILIZADO.
        
        for (int i = (paginas.length)/2; i > -1; i--)
        {
        System.out.println("Poner una página al Buffer: ");
        Pagina paginaN5 = new Pagina(i,"p"+ i);
        Pagina paginaE5 = gestorBuffer.ponerPaginaEnBufferNuevo(paginaN5);
        System.out.println(paginaE5);
        System.out.println(gestorBuffer);
            
        }
        
//        System.out.println("Recuperar una Pagina del Buffer: ");
//        Pagina pagina1 = gestorBuffer.recuperarPaginaDelBuffer(7);
//        System.out.println(pagina1);
//        System.out.println(gestorBuffer);
//
//        System.out.println("Recuperar otra Pagina del Buffer: ");
//        Pagina pagina2 = gestorBuffer.recuperarPaginaDelBuffer(1);
//        System.out.println(pagina2);
//        System.out.println(gestorBuffer);
    
    }
}
